Google
 

Trailing-Edge - PDP-10 Archives - 6.1_emacs_manuals_1er - emacs/pl1.:ej
There are no other files named pl1.:ej in the archive.
pW[0 +8+fq(+4)[1
0fo10f"g+q1'
+fq()+4u1
fq1"l 0'
,q1:m(q1+4(]1]0))y<"N4C^89k5uv4a54)'k9&*I'kX&*h)Ow(a&*'k'&*6(aF(aX%,f/>s/>-}/>!,./3	=0hG1xR2[5Nj6wD\T
Q
OH
(R
;R
PN,
aW	
qW	UnW	(SB9ZTJXWXaeZu_
`
;o
 =4
-D
::
CK
UFb
d?
rAU
N& Align Global PL1 Comment Ends & Back Over PL1 Line Comment& Default Init PL1 Mode& Kill PL1 Library& PL1 Cruf Insert Symtab& PL1 Cruf Pass 2& PL1 End Prev Stmt& PL1 Get Statement Label!& PL1 Indent After Begin Stmt& PL1 Indent After Compound& PL1 Indent After Do Stmt & PL1 Indent After Else Stmt& PL1 Indent After End Stmt!& PL1 Indent After Entry Stmt& PL1 Indent After If Stmt & PL1 Indent After New Block& PL1 Indent After On Stmt & PL1 Indent After Proc Stmt%& PL1 Indent After Procedure Stmt& PL1 Indent After Stmt& PL1 Indent Unfin Comp & PL1 Indent Unfin Else Stmt& PL1 Indent Unfin If Stmt& PL1 Indent Unfin On Stmt& PL1 Indent Unfin Stmt& PL1 Last Sub-Stmt Token& PL1 Next Token& PL1 Token Search& PL1 Tokens to Leftp& Setup PL1 Library& Setup/Kill AuxiliaryCref PL1 LabelsCruf PL1 EntriesIndent PL1 Region
PL1 Mode^R End Global PL1 Comment^R Global PL1 Comment^R Indent PL1 Stmt^R Insert PL1 End^R PL1 Indent Relative^R Print Last PL1 Indenter^R Slurp PL1 to Char~DIRECTORY~)~DOC~ & Align Global PL1 Comment Ends&~DOC~ & Back Over PL1 Line Comment!~DOC~ & Default Init PL1 Mode~DOC~ & Kill PL1 Library"~DOC~ & PL1 Cruf Insert Symtab~DOC~ & PL1 Cruf Pass 2~DOC~ & PL1 End Prev Stmt#~DOC~ & PL1 Get Statement Label'~DOC~ & PL1 Indent After Begin Stmt%~DOC~ & PL1 Indent After Compound$~DOC~ & PL1 Indent After Do Stmt&~DOC~ & PL1 Indent After Else Stmt%~DOC~ & PL1 Indent After End Stmt'~DOC~ & PL1 Indent After Entry Stmt$~DOC~ & PL1 Indent After If Stmt&~DOC~ & PL1 Indent After New Block$~DOC~ & PL1 Indent After On Stmt&~DOC~ & PL1 Indent After Proc Stmt+~DOC~ & PL1 Indent After Procedure Stmt!~DOC~ & PL1 Indent After Stmt!~DOC~ & PL1 Indent Unfin Comp&~DOC~ & PL1 Indent Unfin Else Stmt$~DOC~ & PL1 Indent Unfin If Stmt$~DOC~ & PL1 Indent Unfin On Stmt!~DOC~ & PL1 Indent Unfin Stmt#~DOC~ & PL1 Last Sub-Stmt Token~DOC~ & PL1 Next Token~DOC~ & PL1 Token Search~DOC~ & PL1 Tokens to Leftp~DOC~ & Setup PL1 Library ~DOC~ & Setup/Kill Auxiliary~DOC~ Cref PL1 Labels~DOC~ Cruf PL1 Entries~DOC~ Indent PL1 Region~DOC~ PL1 Mode#~DOC~ ^R End Global PL1 Comment~DOC~ ^R Global PL1 Comment~DOC~ ^R Indent PL1 Stmt~DOC~ ^R Insert PL1 End ~DOC~ ^R PL1 Indent Relative$~DOC~ ^R Print Last PL1 Indenter~DOC~ ^R Slurp PL1 to Char~DOC~ ~FILENAME~~FILENAME~
~INVERT~PL1qm(m.m & Init Buffer Locals)
1,:i*/* m.LComment Startw
1,:i*/* m.LComment Beginw
1,:I* */M.LComment Endw
1,m.m& Indent Without Tabsm.LMM & Indentw
1,m.m& XIndent Without Tabsm.LMM & XIndentw
1,36m.LCOMMENT COLUMNw
1:<m(m.mInit PL1 Mode)
>"N
m(m.m& Default Init PL1 Mode)'
m.vPL1IND ..Dw
^:iPL1IND ..D|                                                                                                                                        A                             A   AA    A   AA   AA    A    A    (    )    A    A         A   AA    A   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA    A    A    A    A    A    A    A   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA    A    A    A    A   AA    A   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA    A    A    A    A        |
q.0,1M(M.M& Set Mode Line)PL1
0[7[9 f[sstring
fsruntimeu7 .u9 fn q9j 
zj -s
NAMES DECLARED BY EXPLICIT CONTEXT.
fkc [1 .u1
[2 :s

"N     .u2 '"# zu2 '
[0 q..ou0 q1j
[..o
fsbcreatew [3 q..ou3
[4
[5
q0u..o
<
.,q2:fb dcl ; \u4
:sref;
f<!NEXT REF!
c
1<  0,1a"c  \u5
q4-q5"N
q3u..o 4,q5\
i	 4,q4\
i
                     q0u..o''
0,1a-15."e 1l 0,1a- "n 1f;NEXT REF'
s  2r'
>>
>
q3u..o   fwl  l 
q0u..o bj q3u..o bj
<
q3u..o :s	; .-5,.-1x5
4x4
q0u..o :s
 5;
0l f4
-l
>
q3u..o
.,((fsruntime)-q7\).fx1
^ftDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
 q.1
z-q.2j
q.1,. fqLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(^R PL1 Indent Relative)
 [1 ^:I1| qLast PL1 Indenteru.1
:iLast PL1 Indenter.1(^R Tab to Tab Stop)
:M(M.M^R Tab to Tab Stop)|
0,1af 	+1"G
0,0af 	+1"G
fs hpos-1(
-d)m(m.m& Indent)w
''
.[P FSHPOS[0
^-f 	L
.[Q FSHPOS[2
0L<    B-."E QPJ :m1'
-L1A-15."N0;'>
Q0"G1:<0,Q0+1:FM>"ER'
"#0L1:<0,Q2+1:FM>"ER'
"#QPJ:M1'''
< F:FB_.,	 "E:L'"#R'
^F_., 	R
>
FSHPOS(QQ,QPK
):M(M.M& Indent)]0fo..qGlob of Comments Flag"N
f:^m(m.m^R Indent for Comment)'
1m.vGlob of Comments Flagw
fn0m.vGlob of Comments Flagw
[.1[.2
 :i*Global Comment[..j
 10[Comment Column
 :i*/**[Comment Start
1[Space Indent Flag
 fs qp ptr
[Auto Fill Mode
m(m.m Auto Fill Mode)
:l gComment Start
1m(m.m^R Indent for Comment)
.-z"L -l' :l
 w
0l
:fb/**"L
< l :fb/**"E 1;' >'
fs z-.f[ vzw
m(m.m & Align Global PL1 Comment Ends)
zj f] vzw
.f[ vbw
m(m.m & Align Global PL1 Comment Ends)
bj f] vbw
qQ fs qp unwindw
m(m.m& Process Options)
m(m.m& Set Mode Line)
[.1[.2[.3
 bj
< :s/**; fkc
0u.1
0u.2
0u.3
.( < :fb/**;
%.3w
.-1f 
4f=* */"E 1u.2'
:fb*/;
fs hpos,q.1 f u.1 w
l >
fs z-.f[ vzw
)j
q.3-1"E
q.2"N
-^f 	 k
51fo..qPL1 Star Line Widthu.1''
q.1-2u.1
q.2"N
(q.1-qComment Column-3&1)+q.1u.1'
< :s*/;
-7f=/* * */"E
2r
q.1-(fs hpos)/2 <i* >
2c '
2r q.1m(m.m& Indent) f
l >
zj f] vzw
>
V^m(m.m^R End Comment) f
 ff"G
.( bj
< :s/**; .-1f >
)j'
fs ^R Exit  [.1[.2[.3[.4[.5[.6
 m.i fiu.5
z-.u.1
0l ^f 	 r
z-.u.6
0:l z-.u.3
.m(m.m& Back Over PL1 Line Comment)j
.u.2
< .,(0l).:fb.5; >
.,q.2f( fx.4 ) f
z-.-q.3"N
^m(m.m^R Indent for Comment) f'
z-q.6j
.,(g.4 i ). f
0l
^m(m.m^R Indent PL1 Stmt) f
z-q.1j w 1 eqLast PL1 Indenter[.0
fs echo displayw
Cfs echo displayw
^ft.0
0fs echo activew
 {qLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(& PL1 Indent After Stmt)
 u.1
[.2
[.3
q.2-b"E
10u.3
1:<q1st Stmt Indentationu.3>'
"#
q.2j fs hposu.3'
q.1j
q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) '
q.3m(m.m& Indent) qLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(& PL1 Indent After Compound)
 u.1
[.2
1:<qCOMP BLOCK Indentationu.3>"N
0m.vCOMP BLOCK Indentationu.3'
q.2j fs hpos[.6
q.2m(m.m& PL1 Last Sub-Stmt Token)[.5[.4
q.4,q.5f~DO"E q.4j fs hpos+q.3u.6'
q.4,q.5f~BEGIN"E q.4j fs hpos+q.3u.6'
q.1j
q.6-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) '
q.6m(m.m& Indent) kqLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(& PL1 Indent After New Block)
 u.1 [.2
 q.2j fwl
z-.<1af 	
         "L 1;'c>
fs hpos[.3
q.1j
 q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) '
q.3m(m.m& Indent) ][.1 [.2 [.3
 qLast Pl1 Indenter[.4
 :iLast PL1 Indenter.4(& PL1 Indent After Proc Stmt)
 10fo..q1st Proc Stmt Indentationu.3
q.1j
q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) '
q.3m(m.m& Indent) =qLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(& PL1 Indent After End Stmt)
 u.1 [.2 [.4[.5
 0[.3
q.2j
!Put in sometime search for matching label subr... *!

 <  b-.;
1m(m.m& PL1 End Prev Stmt)j
m(m.m& PL1 Next Token)u.5u.4
q.4u.2
q.4,q.5f~IF"E
q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4'
    q.4,q.5f~ON"E
q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4'
    q.4,q.5f~ELSE"E
q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4'
    q.4,q.5f~DO"E q.3-1u.3'
q.4,q.5f~BEGIN"E q.3-1u.3'
q.4,q.5f~PROC"E q.3-1u.3'
q.4,q.5f~PROCEDURE"E q.3-1u.3'
q.4,q.5f~END"E %.3w'
q.3-1:;
>

 q.2j
fs hpos[.3
q.1j
 q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) '
q.3m(m.m& Indent) qLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(& PL1 Indent Unfin Stmt)
 u.1
[.2
[.4
[.3[.5
 1:<    fo..qUnfin Stmt Indentationu.4
q.2j fs hposu.3
q.3+q.4u.5
>"N
q.1j -l
q.2-."g
5*.,5*.+1:g..d[.6
5*.:f..d 
2:fwl fshposu.5
5*.:f..d.6 '
"#
0u.5''
q.1j
1:<    -:ful
^f 	jw
fs hposu.5
>
 q.1j
q.5-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) '
q.5m(m.m& Indent) qLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(& PL1 Indent Unfin If Stmt)
 u.1
[.2
fsqpptr[.0
fsz-q.1f[vzw
q.2j
 .,zm(m.m& PL1 Token Search)THEN"N
.,1m(m.m& PL1 Token Search)IF"E
q.0 fs qp unwindw
q.1,q.2m(m.m& PL1 Indent Unfin Stmt) '
2r'
q.0 fs qp unwindw
fs hpos[.3
q.1j
q.3-(fshpos)-1"L
^m(m.m^R PL1 Indent Relative) '
q.3m(m.m& Indent) TqLast Pl1 Indenter[.1
 :iLast PL1 Indenter.1(& PL1 Indent Unfin Comp)
 u.1
[.2
[.4[.5
 q.2,q.1f[hboundw
bm(m.m& PL1 Last Sub-Stmt Token)u.5u.4
q.4j
f]hboundw
q.4,q.5f~IF"N
q.1,q.4m(m.m& PL1 Indent Unfin Stmt) '

 q.4j fs hpos[.3
q.1j
q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) '
q.3m(m.m& Indent) !.[.1
[.2[.3
qPL1IND ..D[..D
ff"G j'
z-b"E q.1j z,z '
<
:s/*"E
zj 0a"B q.1j z,z '
.u.2
-fwl .u.3 1;'
0a-*"E :s*/"E zu.3zu.2 1;' '
"#   .-1u.2
r
<  .-z;
1af 	"L
1a-("E 1:<fllr>"N 1;''"# 1;''c>
(ff&2)1a-:"N
q.2j-fwl .u.3 1;'
'
>

 q.1j
q.3,q.2 F:i*[.1 .[.2 j 0[.3
qPL1IND ..D[..D
f<!DONE!
      <
:s.1/*;"E f;DONE'
fk+fq.1+2"E r 1u.3 1;'
0a-;"E f;DONE'
0a-*"E :s*/"E f;DONE'
r 1u.3'
>>

 q.3"E  q.2j '
q.3 \[.1 .[.2 [.3[.4
 q.1j 0l
m(m.m& PL1 Next Token)u.4u.3
q.2j
q.3-q.1"L 1 '
"# 0 '#[.1 .[.2 [.3[.4
 q.1j
f<!Found!
1f<!Next!
.m(m.m& PL1 Next Token)u.4u.3
     q.3j
fwf~IF"E
.,1m(m.m& PL1 Token Search)THEN"E f;Found'
1;'
fwf~ON"E
.+2m(m.m& PL1 Next Token)jw
1;'
fwf~ELSE"E
.+4m(m.m& PL1 Next Token)u.4u.3 q.3j
1;'
f;Found
>
>
q.3,q.4(q.2j) P.[.1
<
<
-:s;*/"E bj 1; '
"# 1a-;"E 1;'
-:s/*'
>
>

 .(q.1j) <.[.1 j
 .,(0l).:fb/*"E  '
-^f 	[.2j
.(q.1j) `zj
14.i
i
ENTRY SYMBOL TABLE:


 1u.1
:< g:.6(%.1) i  
g:.6(%.1-2)
i

   >w
{fq.5"E '
[..o
.[.7
 [.2[.4
 0,fq.5-1 :g.5 u.5
bj
 < :s.5;
r
-fwx.2
fo.6.2u.4
0l
f.4
l
>
q.7j
 N@:i*| :i*[1
m.m1m.vMM 1w 
|m(m.m& Setup/Kill Auxiliary)
Lm.mKill Variable
@:i*| mkMM w
|m(m.m& Setup/Kill Auxiliary)
<[1
m1& PL1 End Prev Stmt
m1& PL1 Next Token
m1& PL1 Indent After Stmt
 m1& PL1 Indent After Begin Stmt
 m1& PL1 Indent After Do Stmt
 m1& PL1 Indent After End Stmt
 m1& PL1 Indent Unfin Stmt
 m1& PL1 Indent Unfin If Stmt
 m1& PL1 Indent Unfin On Stmt
 m1& PL1 Indent Unfin Else Stmt
 m1& PL1 Last Sub-Stmt Token
 m1& PL1 Indent After If Stmt
 m1& PL1 Indent After On Stmt
 m1& PL1 Indent After Else Stmt
 m1& PL1 Token Search
 m1& PL1 Indent After Proc Stmt
 m1& PL1 Indent After Procedure Stmt
 m1& PL1 Indent After Entry Stmt
 1,q(1,q. m.Qw)m.Q.
1,m.m^R Indent PL1 Stmtm.QI
1,m.m^R Print Last PL1 Indenterm.Q...?
1,m.m^R Indent for Commentm.Q..;
 1,m.m^R End Commentm.Q..\
 1,m.m^R Global PL1 Commentm.Q...;
 1,m.m^R End Global PL1 Commentm.Q...\
 1,m.m^R Slurp PL1 To Charm.Q..{

 0fo..qPL1 Auto Fill Default(
)m(m.m Auto Fill Mode)
1,1m.LSpace Indent Flagw
,Package for editing PL1 code (PL1 MODE).@C Set up for editing PL1 code.
"/* " and " */" become comment delimiters.
$PL1IND ..D$ is set up for use by PL1 indent macros. (E.g. no special
    Lisp characters, and _ is not a break.)
Calls user-providable macro, INIT PL1 MODE, which can put pl1
    macros into desired qregs.  If no macro exits, calls
    & Default Init PL1 Mode.  See the description of that subr
    for more details on what it does and how to construct your own.C Crefs label references in a PL1 listing in the buffer.
The buffer should be a compilation listing.
If you just want a listing, not an object segment, try
    compiling with options -sb -ck.
If a statement on a line references more than one label then
    whichever label is highest alphabetically will be creffed.
If you want to cref a source, not a listing, use MM Cruf PL1 Entries.2C Hacky creffer for subrs and functions.
Does not need a listing, only source.
Crefs PROC's, ENTRY's, and PROCEDURE's.  They must be of the form:
    <label> <whitespace> : <whitespace> <ENTRY> <BREAK CHAR>
I think this wins in most (all?) cases.
Not guaranteed to be correct when there are multiple routines of
    the same name, i.e. scoping is not handled.
Symbol table of entries creffed is inserted on new page at end.^R Indentation via previous statement type.
If there are non-label tokens to left, then just calls
    ^R PL1 Indent Relative.
If non-null arg, calls ^R Indent Nested.
Calls macros to indent statements after prev stmt's type, e.g.
    looks for macro named & PL1 Indent After Do Stmt.
None found, it will call & PL1 Indent After Stmt.
If the previous statement was unfinished (i.e. we are not indenting
    a new statement really), then macros such as & PL1 Indent Unfin Do Stmt
    are called.
The default unfinished-stmt macro is & PL1 Indent Unfin Stmt.
^R Print Last PL1 Indenter will print the name of the indentation
    macro called.Y^R Insert end and show matching block.
Indents if no whitespace to left of cursor.
Displays buffer around matching block statement.
    ARG = number of seconds to display there.
Inserts a comment after the "end;" to show what was ended, e.g.
    "/* do-while */"  or  "/* if-begin */".  Or has label if one was on the
    statement with the do/begin/etc.
    The MARK is left before this comment, point after so you can easily
    delete it with ^R Kill Region.	S Return label for statement at ARG.
ARG: Point within statement.
Returns string containing label, or
Returns 0 if no label found.C Indents each line from here to MARK.
On each line it:
    moves past labels, comments to first token,
    then calls ^R Delete Horizontal Space,
    then calls ^R Indent PL1 Stmt.
Leaves mark and point around changed region, and old text in kill stack.0^R PL1 Indent Relative to last line's words.
Successive calls get successive indentation points;  each call
    aligns under ARGth next word in previous line.
Words are separated by spaces, tabs, underscores, commas, periods.
To facilitate moving into a line, and changing an indentation, if
    there is whitespace to the right and left (i.e. this is a new
    indent call here), then the cursor is moved one column left.,^R Call ^R for large comment.
While in global comment ^R:
Comment column is set to 10,
^R Indent for Comment is called initially,
MM Auto Fill Mode$ is entered with auto-indent,
$Comment Start$ is set to "/**" to mark global comments.
"/*** */" (comment with just a *) expand into /* * * *... */,
    aligned with any surrounding global comments (for boxes),
    or if no surrounding comments expand into $PL1 Star Line Width$ wide
    (default is 51).
When ^R returns, comment-ends within each global comment will be
    vertically aligned.;S Ends within contiguous global comments.
Contiguous global comments are comments starting with "/**", on
    successive lines.
Contiguous global comments have their comment-ends aligned vertically.
If a global comment consists soley of "*", i.e. it is "/*** */",
    then it will expand out into a "/* * * * * ...* */" comment, aligned
    with its contiguous global comments.  If no contiguous comments,
    expands out into /* * *...*/, $PL1 Star Line Width$ wide, default 51,
    and extending to left margin.
After alignment, "/**" is replaced by "/* ".W^R Exit large comment ^R.
Calls ^R End Comment, then exits ^R, so that global comment ^R
    is ended, and comment column will be reset to its old (one-line
    comment form) value.
If given an ARG, will inhibit alignment of global comment-ends, by
    replace all global comment-starts ("/**") by regular comment-starts
    ("/* ").2^R Prev line back to CHAR moved to point, indented.
Non-comment text from previous line (back to CHAR typed) is moved
    onto the current line, after indentation, and then ^R Indent
    PL1 Stmt is called to re-align.  Now that the prev line is
    changed, things might look better.
Any comment on prev line is left there, and ^R Indent for Comment is
    called on it to align it after the text is removed from before it.%^R Print macro name in echo area.8S Default after-indent, same as prev stmt.
If no prev stmt (i.e. 1st stmt in buffer), then indentation is
given by the variable $1st Stmt Indentation$, default = 10.
ARG1 -> where to indent.
ARG2 -> token for previous statement.
Returns two vals surrounding insertion.
Leaves pointer after indentation.S Handle indentation for stmt after IF etc.
Compound stmts are IF-, ELSE-, and ON-statements.
ARG1 -> where to indent.
ARG2 -> token for previous statement.
Returns two vals surrounding insertion.
Leaves pointer after indentation.
If (e.g.) IF ... DO, then indent aligns with DO, +
    $COMP BLOCK Indentation$, i.e. $...$ over from BLOCK.
    (Default $COMP BLOCK$ is 0.)
If non-BLOCK, aligns with IF.aS Next statement indented more, for DO etc.
ARG1 -> where to indent.
ARG2 -> DO token.
2 Vals returned, around indentation.
Pointer left after indentation.
Indentation aligns with whatever follows the DO, BEGIN, etc.FS Indent $1st Proc Stmt Indentation$ amount.
If no $...$ then default 10.
ARG1 -> where to indent.
ARG2 -> PROC token.
Returns two vals around indentation.
Leaves pointer after indentation..S Insert indentation by matching DO/BEGIN/PROC.
ARG1 -> where to indent.
ARG2 -> END token.
Returns 2 vals around indentation.
Returns with pointer after indentation.XS Indent new line of unfinished statement.
Default for indenting unfinished statements. Does:
Case1: If there is an open paren, aligns with next non-white.
Case2: If $Unfin Stmt Indentation$ is defined it will indent
       $Unfin Stmt Indentation$ more than the start of the stmt.
Case3: If prev line contains start of stmt, aligns with 1st word after
       beginning of stmt token (which may be part of token).
Case4: Calls ^R PL1 Indent Relative.
ARG1 -> where to indent.
ARG2 -> token starting unfinished statement.
Returns 2 vals around indentation.
Point left after indentation.5S Indent new line of unfinished IF statement.
Indents same amount as the IF if the THEN hasn't occured yet.
If THEN has occured, just calls & PL1 Indent Unfin Stmt.
ARG1 -> where to indent.
ARG2 -> token starting unfinished statement.
Returns 2 vals around indentation.
Point left after indentation.oS Indent new line of unfinished compound.
Indents same amount as the last sub-statement so far.
ARG1 -> where to indent.
ARG2 -> token starting unfinished statement.
Returns 2 vals around indentation.
Point left after indentation.BS Return ptrs around next token in buffer.
ARG gives place to start from in buffer.
    No ARG means here.
ARG,: Labels are skipped unless pre-comma argument given.
Comments are skipped.aS Searches for a token in a statement.
Comments are skipped.
ARG1 is point in buffer to start from.
ARG2 is iteration: i.e. search for ARG2th token.
STRINGARG is token to search for.
Returns 0 if search unsuccessful: end of statement (;) or end of buffer
    reached first, non-0 if successful.
Returns with pointer after token if successful.S Returns 0 if no tokens to left on line.
ARG is pointer into line where to look left from.
Labels or comments are not counted.rS Finds last stmt in compound stmt (if, on).
If current statement is "IF a THEN IF b THEN c;" this subr will return
    ptrs surrounding c's statement token.
ARG1 points to statement token from where to start, i.e. the compound
    statement's token (IF or ON).
    If ARG1 points to a non-compound statement token, pointers around
    that token are returned.S Return ptr to end prev ARG'th statement.
Value returned points to the semicolon.
ARG = 1 means find first end-; looking back from here.PS From point, move left on line past comment.
ARG is ptr into some line to check left from.
Returns ptr to before comment and white-space before it.
If no comment on line, no movement: ARG is returned."S Used by MM Cruf PL1 Entries.	S Pass 2 for MM Cruf PL1 Entries.
.5 is ptr to search-string of entries. (E.g. ^Bfoo^B^O^Bbar^B^O...)
.6 is ptr to qvector holding entry/dcl# symtab.
ARG1 is ptr to output buffer.
Each occurrance of an entry reference that matches the search-string
    will get a cref line number put at the beginning of the line.
    (The buffer has been line-numbered and has space for the crefs.)RS Put macros into MM-variables for speed.
This object file was compressed on 10:03pm  Saturday, 4 April 1981
by ECC on MC from the following source libraries:

   EMACS1; DSK: PL1 250,	04/04/81 21:55:276S Get rid of our MM-variables that were for speed.+S Map NUMARG function over subroutines.)S Default setup for PL1 mode.
It sets up the following characters for this mode and buffer:
    RUBOUT	Tab-hacking rubout,
    C-RUBOUT Normal rubout,
    TAB	^R Indent PL1 Stmt,
    C-M-?	^R Print Last PL1 Indenter,
    M-;	^R Indent for Comment,
    M-\	^R End Comment,
    C-M-;	^R Global PL1 Comment,
    C-M-\	^R End Global PL1 Comment,
    M-{	^R Slurp PL1 To Char.
Turns on Auto Fill if $PL1 Auto Fill Default$ is non-0.
Users who want to provide their own MM Init PL1 Mode$ can make ^R keys
    (q-registers) and variables local to this mode and buffer by using the
    following subroutine which is global to Init PL1 Mode:
    .Q: Make Local Q-registerPL1 Mode
Cref PL1 Labels
Cruf PL1 Entries
^R Indent PL1 Stmt
^R Insert PL1 End
& PL1 Get Statement Label
Indent PL1 Region
^R PL1 Indent Relative
^R Global PL1 Comment
& Align Global PL1 Comment Ends
^R End Global PL1 Comment
^R Slurp PL1 to Char
^R Print Last PL1 Indenter
& PL1 Indent After Stmt
& PL1 Indent After If Stmt
& PL1 Indent After On Stmt
& PL1 Indent After Else Stmt
& PL1 Indent After Compound
& PL1 Indent After Begin Stmt
& PL1 Indent After Do Stmt
& PL1 Indent After New Block
& PL1 Indent After Procedure Stmt
& PL1 Indent After Entry Stmt
& PL1 Indent After Proc Stmt
& PL1 Indent After End Stmt
& PL1 Indent Unfin Stmt
& PL1 Indent Unfin If Stmt
& PL1 Indent Unfin On Stmt
& PL1 Indent Unfin Else Stmt
& PL1 Indent Unfin Comp
& PL1 Next Token
& PL1 Token Search
& PL1 Tokens to Leftp
& PL1 Last Sub-Stmt Token
& PL1 End Prev Stmt
& Back Over PL1 Line Comment
& PL1 Cruf Insert Symtab
& PL1 Cruf Pass 2
& Setup PL1 Library
& Kill PL1 Library
& Setup/Kill Auxiliary
& Default Init PL1 Mode
\+8+fq(+4)[2 0[3
< %3,-q2f2u3 q3&1@; q3"l 0' >
f[BBind q3-1*5,q3*5g2 q:..o(0)+q2